﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MassIntellect.WorkIt
{
    [Flags]
    public enum SerializeAs
    {
		/// <summary>
		/// Не выгружать
		/// </summary>
		None,
        /// <summary>
        /// Как элемент
        /// </summary>
        Element,
        /// <summary>
        /// Как атрибут
        /// </summary>
        Attribute,
        /// <summary>
        /// Как коллекция элементов
        /// </summary>
        Collection
    }

    [AttributeUsage(AttributeTargets.Property, Inherited = true, AllowMultiple = false)]
    public sealed class SerializeAttribute : Attribute
    {
        public SerializeAs SerializeAs { get; set; }

        /// <summary>
        /// Тип элемента
        /// </summary>
        public Type TypeItem { get; set; }

        /// <summary>
        /// Учитывать как ссылку
        /// </summary>
        public bool AsReference { get; set; }

        /// <summary>
        /// Игнорировать значение по-умолчанию
        /// </summary>
        public bool IgnoreDefault { get; set; }

        public SerializeAttribute(SerializeAs serializeAs)
        {
            IgnoreDefault = false;
            SerializeAs = serializeAs;            
        }

        public SerializeAttribute()
            : this(SerializeAs.Element)
        {
        }
    }
}
